{\rtf1\ansi\deff0\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\fswiss\fprq0\fcharset0 Microsoft Sans Serif;}{\f4\fnil\fprq0\fcharset128 OpenSymbol{\*\falt Arial Unicode MS};}{\f5\fnil\fprq2\fcharset0 Arial Unicode MS;}{\f6\fnil\fprq2\fcharset0 MS Mincho;}{\f7\fnil\fprq2\fcharset0 Tahoma;}{\f8\fnil\fprq0\fcharset0 Tahoma;}}
{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
{\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\snext1 Normal;}
{\s2\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang255\ltrch\dbch\af6\langfe255\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033\sbasedon1\snext3 Heading;}
{\s3\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon1\snext3 Body Text;}
{\s4\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af8\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon3\snext4 List;}
{\s5\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af8\afs24\lang255\ai\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\i\loch\f0\fs24\lang1033\i\sbasedon1\snext5 caption;}
{\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af8\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon1\snext6 Index;}
{\*\cs8\cf0\rtlch\af4\afs24\lang255\ltrch\dbch\af4\langfe255\hich\f4\fs24\lang1033\loch\f4\fs24\lang1033 Bullet Symbols;}
{\*\cs9\cf0\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 Numbering Symbols;}
}{\*\listtable{\list\listtemplateid1
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li360}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li720}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1080}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1440}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li1800}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2160}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2520}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li2880}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3240}
{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3600}}\listid1}
{\list\listtemplateid2
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li360}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li720}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1080}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1440}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li1800}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2160}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2520}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li2880}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3240}
{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3600}}\listid2}
{\list\listtemplateid3
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li360}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9702 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li720}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9642 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li1080}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li1440}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9702 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li1800}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9642 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li2160}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li2520}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9702 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li2880}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9642 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li3240}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\f4\f4\f4\fi-360\li3600}}\listid3}
}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}{\listoverride\listid2\listoverridecount0\ls1}{\listoverride\listid3\listoverridecount0\ls2}}

{\info{\creatim\yr2011\mo7\dy27\hr8\min15}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern3000}}\deftab709
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
\paperh15840\paperw12240\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\f3\fs24\lang1033\b\loch\f3\fs24\lang1033\b {\rtlch \ltrch\loch\f3\fs24\lang1033\i0\b Materials}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1033\loch\f3\fs20\lang1033 {\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0 This sample shows how to construct materials both procedurally as well as from a script file. A material describes the necessary information to render geometry to the screen, this means it has reference to an effect shader, render states, and shader parame
ters such as textures and colors. An effect is a complete set of shaders \'96 vertex and pixel which are executed on the device. Each effect can have a number of techniques to use, each with one or more passes.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0 The sample shows two boxes that appear to have a similar material (one is tinted, but in all other respects the materials are identical), one that has a material script, and one that procedurally creates the material. The latter is exactly what the materia
l loader would do when parsing a material script.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0 The engine's material script is called {\rtlch\ltrch\dbch\hich\b\loch\b TEM} ({\rtlch\ltrch\dbch\hich\b\loch\b T}esla {\rtlch\ltrch\dbch\hich\b\loch\b E}ngine {\rtlch\ltrch\dbch\hich\b\loch\b M}aterial) and it is a human readable text file. Material scripts are loaded as any other content and allow the developer to create a template for a material that can be re-used by many meshes. Additi
onally, you can create child materials that inherit from another material script. For example, you can create a child material that uses one of the engine's built-in materials and override several parameters, such as the material's texture. Since material 
scripts are not C# source files, the developer can modify how an object is rendered without having to re-compile their application or writing any C# code. This provides ease of use to an artist who may not know how to handle C# code or would prefer not to.
 When the artist authors the shader content they can either manually create the {\rtlch\ltrch\dbch\hich\b\loch\b TEM} file, or use a tool to expedite that creation.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0 Additionally, materials can serve as a means to separate platform specific content such as shaders. If you multiple versions of the same shader, one for each platform (e.g. XNA Windows, XNA Xbox, Direct3D10 Windows), and compile each version into its own b
inary file (a T{\rtlch\ltrch\dbch\hich\b\loch\b EBO} file), then you reference this file in your material. When running on different platforms, all you need to do is change the directory that you load the platform-specific shaders from. This somewhat mirrors how XNA's content projects func
tion, where you create specific content for different platforms but reference them all by the same name, albeit in different  file directories.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0 Materials also provide two other key features:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360 1.\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls1\li360\ri0\lin360\rin0\fi-360\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 Material Logic}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360 2.\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 Engine Value Mapping}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 Material logic can be thought of as \'93preshaders\'94, which are pieces of logic that are executed on the CPU and not the GPU in order to optimize operations that only really need to be performed once per-frame, such as concatenating the World-View-Projection m
atrices. An example of material logic is how default lighting is implemented in the engine - for every material a }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\b\loch\f3\fs20\b LightLogic}{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20  objected is created. When the material executes the light logic, it searches for and caches the uniform variables that correspond t
o the lighting structures the engine uses based on semantic/variable names then it will take the lights that influence the geometry the most and send that data to the shader. The light logic class can be modified to change which uniform semantics to look f
or, or a completely custom lighting solution can be created in the same manner.}}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 The second feature is the idea of engine values. These values are defined by the engine, such as the World-View-Projection matrix, the camera position, or timing values. The developer can bind this data to specific shader uniform variables. Once bound, eve
ry time the material is applied, these values are retrieved from the engine and sent to the shader. This frees the developer from having to set per-frame values manually, which can be error prone. When binding your shader's uniform to the WorldViewProjecti
on engine value, you can expect that value to always be sent to your shader and \'93just work\'94.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 There are three caveats in dealing with engine values:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360 1.\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\li360\ri0\lin360\rin0\fi-360\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 A }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\b\loch\f3\fs20\b World Matrix}{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20  must be set to the engine's value map before accessing any world matrix related properties. This is set automatically in }{\rtlch\ltrch\dbch\hich\f3\fs20\b\loch\f3\fs20\b Material.ApplyMaterial()}{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 , the world matrix is taken from the }{\rtlch\ltrch\dbch\hich\f3\fs20\b\loch\f3\fs20\b Irenderable.WorldTransform.Matrix}{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20  property. Because it's ha
ndled by the material, all you need to do is supply any object that implements }{\rtlch\ltrch\dbch\hich\f3\fs20\i\loch\f3\fs20\i IRenderable.}}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360 2.\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 A }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\b\loch\f3\fs20\b Camera}{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20  should be set to the engine's value map before accessing any camera related properties, including view and projection matrix properties. This is done automatically when setting the }{\rtlch\ltrch\dbch\hich\f3\fs20\b\loch\f3\fs20\b Renderer.CurrentCamera}{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20  property.}}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360 3.\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 A }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\rtlch\ltrch\dbch\hich\f3\fs20\b\loch\f3\fs20\b GameTimer}{\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20  needs to be set before accessing any timer related properties. Typically this is done at the start of the application and only done once. If creating an application from scratch, this is the only requirement by the developer unless if they have
 a custom scene management solution.}}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 These are the only three properties that the engine value map requires, all other properties are read-only and derive from these three or from internal values (such as the random value stream) that do not need to be set by the developer.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1033\loch\f3\fs20\lang1033
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs24\lang1033\loch\f3\fs24\lang1033{\rtlch \ltrch\loch\f3\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\b\loch\b Built-in Materials}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1033\loch\f3\fs20\lang1033 {\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0 In addition to the engine shader library, the engine defines a number of materials that you can load:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls2\li360\ri0\lin360\rin0\fi-360\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 BasicColor.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 BasicTexture.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 BasicVertColor.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 BasicVertColorTexture.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 LitBasicColor.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 LitBasicTexture.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 LitBasicVertColor.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 LitBasicVertColorTexture.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 NormalMap.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 NormalMapVertColor.tem}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\f4\f4\f4 \'95\tab}\ilvl0 \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 SkyBox.tem}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\rtlch\ltrch\dbch\hich\f3\fs20\loch\f3\fs20 The naming of these materials should be apparent of the sort of effect or data they require (e.g. VertColor means that a vertex color attribute is expected, the prefix \'93Lit\'94 implies the effect requires normals for lightning. Each of these materials can be 
inherited from in order to modify parameters or add in textures.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af7\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033
\par }